/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.servico;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author cadomeireles
 */
public class ServicoGenerico<T>  {
    
    @PersistenceContext
    private EntityManager entityManager;
    private Class<T> entidade;
    
    public ServicoGenerico(Class<T> entidade) {
        this.entidade = entidade;
    }
    
    public void salvar(T entidade) {
        entityManager.persist(entidade);
    }
    
    public void deletar(T entidade) {
        T entidadeDeletada = entityManager.merge(entidade);
        entityManager.remove(entidadeDeletada);
    }
    
    public void atualizar(T entidade) {
        entityManager.merge(entidade);
        entityManager.flush();
    }
    
    public T pesquisar(Long entidadeId) {
        return entityManager.find(entidade, entidadeId);
    }
    
    public List<T> pesquisarTodos() {
        return entityManager.createQuery("select entidade from " + entidade.getSimpleName() + " entidade").getResultList();
    }

    public EntityManager getEntityManager() {
        return entityManager;
    }

    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }

}
